package com.hmdp.config;

import javax.annotation.Resource;

import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import com.hmdp.utils.LoginInterceptor;
import com.hmdp.utils.RefreshTokenInterceptor;

import lombok.extern.slf4j.Slf4j;

/**
 * MVC配置类
 * 
 * @author 17452
 *
 */
@Slf4j
@Configuration
public class MvcConfig implements WebMvcConfigurer {

	@Resource
	private StringRedisTemplate stringRedisTemplate;

	/**
	 * Spring MVC生命周期拦截器，用于控制器方法调用和资源处理程序请求的预处理和后处理。
	 * 可以注册拦截器以应用于所有请求，或者限制于URL模式的一个子集。 在这里配置使登录拦截器生效
	 */
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		log.debug("加载MVC拦截器~");

		// order设置加载优先级
		registry.addInterceptor(new RefreshTokenInterceptor(stringRedisTemplate)).addPathPatterns("/**").order(0);

		// 不需要拦截的放行
		registry.addInterceptor(new LoginInterceptor()).excludePathPatterns("/shop/**", "/voucher/**", "/shop-type/**",
				"/upload/**", "/blog/hot", "/user/code", "/user/login").order(1);

	}

}
